const { app, BrowserWindow, Menu, Tray, ipcMain } = require('electron')
const path = require('path')
const tpl = require('../assets/tpl')
const getTpl = require('../assets/tpl2')

let mainWindow
let tray
let menu2
app.whenReady().then(() => {
  createWindow()
})

ipcMain.on('showMenu', (event) => {
  if (!menu2) menu2 = Menu.buildFromTemplate(getTpl(event.reply))
  menu2.popup()
})

function createWindow() {
  mainWindow = new BrowserWindow({
    width: 600,
    heigth: 500,
    webPreferences: {
      nodeIntegration: false, // 开启node.js环境集成风险比较大
      sandbox: false, // 关闭沙箱不然preload中使用nodeapi报错
      preload: path.join(__dirname, '../preload/index3.js'), // 在prelaod中访问node大api
    }
  })
  mainWindow.loadFile(path.join(__dirname, '../renderer/index4.html'))
  mainWindow.webContents.openDevTools()
  // 在Mac系统下，第一个菜单的位置一定要留出来，因为macOS会自动设置第一个菜单，其菜单名与应用名相同
  if (process.platform === 'darwin') {
    tpl.unshift({
      label: '关于', submenu: [
        {
          label: '关于此程序'
        }
      ],
    })
  }
  const menu = Menu.buildFromTemplate(tpl)
  // 上下文菜单
  Menu.setApplicationMenu(menu)
  tray = new Tray(path.join(__dirname, '../assets/imgs/trayiconTemplate.png'))
  // 设置鼠标指针在托盘图标上悬停时显示的文本
  tray.setToolTip('点击查看当日天气情况')
  // 托盘菜单
  tray.setContextMenu(menu)
  // dock菜单
  app.dock.setMenu(menu)

  setTimeout(() => {
    tray.popUpContextMenu(menu)
  },2000)

  ipcMain.handle('mouseRight', () => {
    menu.popup({
      // window: BrowserWindow.getFocusedWindow(),
      // x: 10, // 相对于窗口的x轴偏移，默认是鼠标位置的横坐标
      // y: 20, // 相对于窗口的y轴偏移，默认是鼠标位置的纵坐标
      callback: () => {
        console.log('menu closed')
      },
    })
  })
}